poh*_*ohe 1 bash command loops sed execute
感谢您的帮助.我正在编写一个简单的bash脚本,它只读取文件的每一行,然后将每一行存储到另一个变量中.例如,我希望脚本执行以下命令:
d1=AER
d2=BHR
d3=CEF
...
Run Code Online (Sandbox Code Playgroud)
因此,我有一个包含10行的文本文件,每行是我要存储的变量的内容(例如,AER),我有以下test.sh脚本:
#!/bin/bash
for i in {1..10..1}
do
$(d$i=$(sed -n ${i}p $HOME/textfile.txt))
done
Run Code Online (Sandbox Code Playgroud)
但是,在执行脚本时,它给了我
./test.sh: line 4: d1=AER: command not found
./test.sh: line 4: d2=BHR: command not found
./test.sh: line 4: d3=CEF: command not found
...
Run Code Online (Sandbox Code Playgroud)
而不是将字符存储到相应的变量中.有人可以确定我做错了吗?非常感谢!
您的脚本的问题是,如果您需要在第一行插入变量,bash会认为它是程序的名称并尝试执行它.你可以评估它,制作变量:
eval "d$i=$(sed ...)"
Run Code Online (Sandbox Code Playgroud)
但是使用内置的read bash要简单得多,因为它需要对指定变量进行行输入.这是一种方法:
for ((i=1;; i++)); do
read "d$i" || break;
done < textfile.txt
echo "$d1"
echo "$d2"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6646 次 |
| 最近记录: |