我有一個更復雜的shell腳本的小幫手腳本的集合,儘管這很有效,但我決定由於各種原因而想將它們縮減爲一個腳本。從stdin運行腳本命令,帶有參數
所以我想我會在這裏使用文檔,以便我可以創建「嵌套的」shell腳本以適當地本地或遠程運行。此作品不夠好,我可以做如下:
#!/bin/sh
nested_script=$(cat << 'NESTED_SCRIPT'
# Script commands
NESTED_SCRIPT
)
echo "$nested_script" | sh
不是最實用的例子,但事實上,我可以把它送到ssh
,而不是讓這個非常有用的。
但是,我遇到的問題是,我不知道如何也爲嵌套腳本提供參數,就像我向sh
命令添加任何內容,然後將其解釋爲要運行並忽略的文件標準輸入完全。
在我的本地機器,我可以做echo "$script" | sh /dev/stdin "foo" "bar"
,它會很好地工作,但我不相信我的支持以這種方式使用的/dev/stdin
工作遠程機器。
還有其他解決方案嗎?目前我使用sed
將參數強制轉換爲腳本字符串,但這不是一個很好的方法。
對於那些想知道的;我試圖這樣做的原因是我的嵌套腳本可能在本地運行,也可能是遠程運行,具體取決於是否提供了主機。我真的不想在遠程主機上創建文件來運行,而只是遠程運行命令,這種方法看起來好像會啓用(如果我可以像我想要的那樣讓它工作)。
啊哈,謝謝!我知道我必須失去一些東西!你對'-c'也是正確的,看起來我現在有很多選項可用於我的所有用例,再次感謝! – Haravikk