我有一個複雜的grep/awk中的/ etc命令,它已經使用了一些「有些是$ var線,這使得它無法使用如何將多行輸出從管道傳遞給bash中的變量?不使用臨時文件
VAR="$(that command)"
讓所有輸出
我不「不想創建臨時文件,這使得它甚至醜陋,
,纔有可能管輸出傳遞到一個變量在bash
像
command | > $VAR
我有一個複雜的grep/awk中的/ etc命令,它已經使用了一些「有些是$ var線,這使得它無法使用如何將多行輸出從管道傳遞給bash中的變量?不使用臨時文件
VAR="$(that command)"
讓所有輸出
我不「不想創建臨時文件,這使得它甚至醜陋,
,纔有可能管輸出傳遞到一個變量在bash
像
command | > $VAR
只需使用:VAR=$(complex command)
,編寫complex command
就像你將它寫在下一行一樣。
例如:如果你有
foo=1
bar="2 3"
awk -v myfoo="$foo" -v mybar="$bar" '..... complex
awk
script here .....'
,你可以將它放入VAR有:
foo=1
bar="2 3"
VAR="$(awk -v myfoo="$foo" -v mybar="$bar" '..... complex
awk
script here .....')"
即一旦在$(...),慶典正在讀的東西,如果它是在「第一級」。它在$(...)在包含它的行被評估之前首先被評估。
它可以工作。 – valpa
你可以做一個循環如下(只是一個警告,循環分割輸出的空間。所以,你會得到通過迭代字):
#!/usr/bin/ksh
for RC_OUTPUT in $(./testEcho.ksh)
do
echo $RC_OUTPUT
done
這裏一個更復雜的解決方案(每行的最大lenght = 80): #在/ usr/bin中/ KSH
LINE_LENGTH_MAX=80
LINE_LENGTH=0
for RC_OUTPUT in $(./testEcho.ksh)
do
CURRENT_LENGTH="$(expr length $RC_OUTPUT)"
((LINE_LENGTH = LINE_LENGTH + CURRENT_LENGTH + 1))
if [[ $LINE_LENGTH -gt $LINE_LENGTH_MAX ]]
then
LINE_LENGTH=$CURRENT_LENGTH
echo $RC_OUTPUT
else
echo -n "$RC_OUTPUT "
fi
done
'command> $ VAR'會創建一個名爲'$ VAR'的**文件**。 – devnull
您是否試圖在VAR =「$(...」)內跳過「和$字符?」 示例:VAR =「$(echo \」)「; echo $ VAR – StianE
您確定無法使用:'VAR =「$(that command)」'?請注意,在$(...)內部,你「進入」了這個層次,這意味着你不必引用引號。 「'(echo」toto titi「)」''而不是'VAR =「$(echo \」toto titi \「)」'。使用第一種形式('VAR =「$(echo」toto titi「)」')根據需要,您最終會(在bash首先評估$(...)部分)VAR =「toto titi」, –