我正在运行一个 bash 脚本,其参数/参数作为文件。从脚本内部,如何获取这些文件的内容?
我使用以下命令行运行脚本:
sh script_name animal.txt stars.txt
animal.txt
包含“长颈鹿”。
从脚本中,我如何获取 的内容(长颈鹿)animal.txt
?我对 bash 脚本非常陌生,因此非常感谢您的帮助,谢谢。
答案1
for f do exec <"$f"
: handle stdin
done
非交互式 shell 会将来自无法读取或与特殊内置函数关联时不存在的文件的任何重定向视为致命错误,并立即退出,并向 stderr 写入有意义的诊断消息。因此,要么您的参数是有效的、可读的文件,并且上述语句将没有任何用处,除非您用: ...
有用的东西替换该部分,或者用户提供了无效的参数并且脚本有意义地退出。
当你这样做时...
for var in ...; do : compound command list on "$var"; done
该in ...;
位是语法中的可选语句,它使您能够用参数集替换默认集(即参数列表)。
所以...
for var do : compound command list on "$var"; done
...可能就是您正在寻找的东西,在这里。
for f do exec <"$f"
: now do some stuff w/ stdin
done
...其中 shell 将迭代地将脚本中提供的所有参数分配给 stdin,并验证为可读文件,以便语句后面的所有命令都可以使用,exec
直到所有参数都用尽并且for
循环结束done
。如果它无法做到这一点,那么它将以用户已经习惯的标准格式格式化并打印错误消息。
答案2
first_file="$1"
test -f "$first_file" || exit 2
file_content="$(<"$first_file")"
echo "$file_content"
答案3
你能行的:
#!/bin/bash
while read line ;
echo "$line"
#######
#######
########
done < "$1"
描述:每个 $line 是文件的完整行的内容。
usage : ./script.sh file.txt