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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.