var=4
com="$(echo "A\nB\nC\nD" | sed 's/\\n/\n/g')"
seq "$var" | sed 's/^/var/g' | xargs | sed 's/^/read /g' | sed "s/$/ <<< \"\$(echo \"\$com\")\"/g"
以上輸出: read var1 var2 var3 var4 <<< "$(echo "$com")" 我想要的是執行該命令,而不是在執行后使用 && 輸出和回顯所有四個設定變數
嘗試過:
`seq "$var" | sed 's/^/var/g' | xargs | sed 's/^/read /g' | sed "s/$/ <<< \"\$(echo \"\$com\")\"/g"` && echo $var1 $var2 $var3 $var4
不起作用
嘗試過:
seq "$var" | sed 's/^/var/g' | xargs | sed 's/^/read /g' | sed "s/$/ <<< \"\$(echo \"\$com\")\"/g" | bash
以上不起作用,因為變數不是在全域設定的單獨會話中設定的
嘗試過:
eval "seq "$var" | sed 's/^/var/g' | xargs | sed 's/^/read /g' | sed \"s/$/ <<< \"\$(echo \"\$com\")\"/g"\" && echo $var1 $var2 $var3 $var4
但不起作用。需要請幫忙。
期望輸出:所有變數設定后:ABCD
seq "$var" | sed 's/^/var/g' | xargs | sed 's/^/read /g' | sed "s/$/ <<< \"\$(echo \"\$com\")\" \&\& echo \$var1 \$var2 \$var3 \var4/g" | bash
以上可能有效,但 $com 未在 sed 內擴展
uj5u.com熱心網友回復:
終于成功了
var=4
com="$(echo "A\nB\nC\nD" | sed 's/\\n/\n/g')"
seq "$var" | sed 's/^/var/g' | xargs | sed 's/^/read /g' | sed "s/$/ <<< \"\$(echo `echo $com`)\" \&\& echo \$var1 \$var2 \$var3 \$var4/g" | bash
uj5u.com熱心網友回復:
終于解決了
var=4
com="$(echo "A\nB\nC\nD" | sed 's/\\n/\n/g')"
eval "seq "$var" | sed 's/^/var/g' | xargs | sed 's/^/read /g' | sed \"s/$/ <<< \$\(echo `echo $com`\) \&\& echo \\\$var1 \\\$var2 \\\$var3 \\\$var4/g\"" | bash
uj5u.com熱心網友回復:
假設:
- 目標是定義和填充四個新變數:
var1=A,var2=B,var3=C和var4=D - 可選
export的變數
生成變數名稱和值:
$ $ printf "var%s\n" {1..4}
var1
var2
var3
var4
$ printf "%s\n" {A..D}
A
B
C
D
將變數名與值關聯:
$ paste <(printf "var%s\n" {1..4}) <(printf "%s\n" {A..D})
var1 A
var2 B
var3 C
var4 D
bash nameref 的簡短演示:
$ typeset -p myvar
-bash: typeset: myvar: not found
$ declare -n newvar="myvar"
$ newvar='new_value'
$ typeset -p newvar myvar
declare -n newvar="myvar"
declare -- myvar="new_value"
$ echo "${newvar}"
new_value
$ echo "${myvar}"
new_value
從這里我們可以使用while回圈和 anameref來創建和填充新變數:
# verify variables do not exist:
$ typeset -p var1 var2 var3 var4
-bash: typeset: var1: not found
-bash: typeset: var2: not found
-bash: typeset: var3: not found
-bash: typeset: var4: not found
# create/populate/export new variables
while read -r name val
do
declare -n x="${name}"
export x="${val}"
done < <(paste <(printf "var%s\n" {1..4}) <(printf "%s\n" {A..D}))
# verify variables now exist, are populated and exported (-x):
$ typeset -p var1 var2 var3 var4
declare -x var1="A"
declare -x var2="B"
declare -x var3="C"
declare -x var4="D"
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/358495.html
上一篇:將元素的值分配給變數輸出
下一篇:在函式中間更改變數名
