簡體   English   中英

輸入字符串命令運行另一個 .sh 文件 bash 腳本

[英]Enter string command to run another .sh file bash script

我嘗試將一些文件復制到給定的輸入。
首先,我在終端中輸入一個類似"*.txt"的輸入。然后我必須發送另一個 .sh 文件

 read -p "Write input " input6
 bash ./prog.sh -R $input6

但是 ./prog.sh 工作錯誤。,它給出了一個錯誤:

cp: cannot stat '"*.txt"': No such file or directory"

如果我這樣寫:

 bash ./prog.sh -R "*.txt"

有效。文件被復制。

問題是什么 ? 你怎么認為 ? 有什么建議?

我不明白$input6"*.txt"什么不同?

我必須使用菜單。為了運行我的程序,我將命令發送到另一個 .sh 文件。

順便說一句,我的老師想輸入像“*.txt”這樣的雙引號

聽起來您在對提示的響應中輸入了雙引號。 您不應該這樣做,因為在擴展變量后不會處理引號,因此將按字面意思處理它們。 由於您沒有任何以雙引號開頭和結尾的文件名,因此通配符匹配將失敗。

相反,您應該在將變量用作腳本參數時引用它。

bash ./prog.sh -R "$input6"

然后根據提示輸入*.txt ,而不是"*.txt"

如果確實需要輸入雙引號,則需要使用eval來處理它們。

eval "bash ./prog.sh -R $input6"

但是,這是危險的,因為您可以輸入將由eval執行的命令。

這應該可以解決您的問題:

read -p "Write input " input6

bash ./prog.sh -R $(echo $input6 | xargs)

PS 我認為更好的方法是禁止在輸入字符串中使用引號

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM