我有一个CT.txt
带有以下输入数据的。 CT.txt:
test testing test 1
并使用以下脚本:
#!/bin/bash
for CITY in $(cat /home/user/CT.txt)
do
FILES=/mnt/dir1/dir2/$CITY/*
echo $FILES
给我输出如下:
/mnt/dir1/dir2/test
/mnt/dir1/dir2/testing
/mnt/dir1/dir2/test/*
/mnt/dir1/dir2/1/*
其中输出应该是:
/mnt/dir1/dir2/test
/mnt/dir1/dir2/testing
/mnt/dir1/dir2/test 1
如何使CT.txt
文件读取之间有空格测试1。
答案1
如果你改变 awk 中的 FS(字段分隔符),你就可以实现它。
awk -F: '{ print "/mnt/dir1/dir2/"$1 }' CT.txt
答案2
假设 CT.txt 的条目为 1 / 行,则该while
循环更适合您的任务:
while IFS= read -r CITY; do
FILES=/mnt/dir1/dir2/$CITY
echo "$FILES"/*
done < /home/user/CT.txt
该for
循环不适合这种情况,但是仍然可以使其工作:
# set the input field separator to newline and disable globbing
IFS=$'\n';set -f
for CITY in $(< /home/user/CT.txt); do
FILES=/mnt/dir1/dir2/$CITY
echo "$FILES"/*
done