[英]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.