[英]How to execute command line via input
這是我的腳本:
env -i MY_KEY=$my_key MY_ACCOUNT=$my_account command-that-outputs-a-list \
| grep "name" | awk -v src=$src \
'{a = substr($2,2, length($2)-3); print "my_copy_cmd -s xx-yy/"src"/"a" -d . "}'
它輸出如下內容:
my_copy_cmd -s xx-yy/source-file-name -d .
my_copy_cmd -s xx-yy/source-file-name -d .
my_copy_cmd -s xx-yy/source-file-name -d .
my_copy_cmd -s xx-yy/source-file-name -d .
現在我只想在同一行中執行它,但是xargs
將所有傳入參數都放入一行參數中(並且它不運行它)。 xargs -0
也不起作用。 我想使用env -i
在沒有變量的環境中運行它,並臨時設置我的 env 變量(=就像我在第一個命令中所做的那樣),例如(這不起作用):
env -i MY_KEY=$my_key MY_ACCOUNT=$my_account command-that-outputs-a-list \
| grep "name" | awk -v src=$src \
'{a = substr($2,2, length($2)-3); print "my_copy_cmd -s xx-yy/"src"/"a" -d . "}' \
| xargs env -i MY_KEY=$my_key MY_ACCOUNT=$my_account
這是否有效:
env -i MY_KEY=$my_key MY_ACCOUNT=$my_account command-that-outputs-a-list \
| grep "name" | awk -v src=$src \
'{a = substr($2,2, length($2)-3); print "my_copy_cmd -s xx-yy/"src"/"a" -d . "}'|while read z;do $z 2>&1 ;done
while loop
將從輸出中讀取每一整行,然后執行它。
嘗試將輸出通過管道傳輸到sh
或bash
。 您可以通過在命令前添加賦值來設置變量:
$ echo 'echo variable is $my_var' | my_var=foo bash
variable is foo
所以這樣的事情應該有效:
env -i MY_KEY=$my_key MY_ACCOUNT=$my_account command-that-outputs-a-list \
| grep "name" | awk -v src=$src \
'{a = substr($2,2, length($2)-3); print "my_copy_cmd -s xx-yy/"src"/"a" -d . "}' \
| MY_KEY=$my_key MY_ACCOUNT=$my_account bash
我發現這是在實際執行之前組裝和預覽一批命令的一個很好的技巧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.