使用shell脚本读取文件

Abd*_*naf 4 linux shell

我有一个名为的文本文件sqlfile,其中包含以下内容:

a.sql
b.sql
c.sql
d.sql
Run Code Online (Sandbox Code Playgroud)

我想要的是将它们存储在变量中然后使用for循环打印.但在这里我只得到d.sql脚本的输出.

剧本:

#!/bin/bash

while read line
do
files=`echo $line`
done < /home/abdul_old/Desktop/My_Shell_Script/sqlfile

for file in $files
        do
                echo $file
        done
Run Code Online (Sandbox Code Playgroud)

Sie*_*geX 6

变量只能包含一个元素,你想要的是一个数组

#!/bin/bash

while read line
do
  files+=( "$line" )
done < /home/abdul_old/Desktop/My_Shell_Script/sqlfile

for file in "${files[@]}"
do
  echo "$file"
done
Run Code Online (Sandbox Code Playgroud)


Jon*_*ler 5

while read line
do files="$files $line"
done < /home/abdul_old/Desktop/My_Shell_Script/sqlfile
Run Code Online (Sandbox Code Playgroud)

要么

files=$(</home/abdul_old/Desktop/My_Shell_Script/sqlfile)
Run Code Online (Sandbox Code Playgroud)

要么

files=$(cat /home/abdul_old/Desktop/My_Shell_Script/sqlfile)
Run Code Online (Sandbox Code Playgroud)

你在循环中做了太多的工作.

中间替代方案适用bash; 另外两个适用于大多数炮弹.喜欢$(...)反引号.

此代码假定文件名中没有空格来搞砸.如果你在文件名中使用空格,你必须更加努力地工作 - 请参阅SiegeX基于阵列的解决方案