Shell Script không thể thực thi lệnh đã truyền làm đầu vào


1

Tôi đang cố gắng thực thi lệnh từ script nhưng không thể thực thi nó.

kịch bản: lệnh.sh

#!/bin/bash
a=$1  
b=$2
echo "a=$a"
echo "b=$b"
`$a | $b`

Lệnh thực thi:

bash-3.2 $ ./command.sh "tar cvf - TRỰC TIẾP" "nén -c & gt; /export/home/tceng/Desktop/temp/TestExtractUtility/tem/DIR.tar.Z"

đầu ra:

./command.sh "tar cvf - TRỰC TIẾP" "nén -c & gt; /export/home/tceng/Desktop/temp/TestExtractUtility/tem/DIR.tar.Z"

a = tar cvf - TRỰC TIẾP

b = nén -c & gt; /export/home/tceng/Desktop/temp/TestExtractUtility/tem/DIR.tar.Z

/export/home/tceng/Desktop/temp/TestExtractUtility/tem/DIR.tar.Z: đã có hậu tố .Z   tar: DIR: Không có tập tin hoặc thư mục như vậy   bash-3,2 $

{Lưu ý: Yêu cầu là hoàn toàn chuyển hai lệnh không sửa đổi hoặc đưa logic vào tập lệnh}.

lệnh trực tiếp làm việc từ dấu nhắc. Tôi nghĩ có vấn đề với & gt; nhà điều hành

Bạn có thể vui lòng đề nghị một cái gì đó về điều này.

Cảm ơn, Anil


Bạn đã thử chưa đánh giá $ a | đánh giá $ b ?
— Ayan

Nó không hoạt động :-( Tôi nghĩ có vấn đề với toán tử & gt; trong đầu vào
— Anil Bhendarkar

@AnilBhendarkar Tôi bối rối. Chính xác thì bạn muốn kịch bản làm gì?
— curious_cat

Câu trả lời:


0

Loại bỏ các backticks. Điều này dường như làm việc cho tôi. Đây có phải là điều bạn muốn không?

#!/bin/sh
a=$1  
b=$2
echo "a=$a"
echo "b=$b"
$a | $b
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.