簡體   English   中英

如何通過輸入執行命令行

[英]How to execute command line via input

我已經閱讀了thisthis ,但沒有讓它起作用。

這是我的腳本:

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將從輸出中讀取每一整行,然后執行它。

嘗試將輸出通過管道傳輸到shbash 您可以通過在命令前添加賦值來設置變量:

$ 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.

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