如何验证shell脚本中文件的第一个字符?



我试图让脚本找到第一个字符"反斜杠和验证,如果这是一个脚本的第一个字符,否则它不应该运行。

我的文件是Test.txt(有意设置大量行距):



c
select * from x;

我想出了这个,它工作:

cut -c -1 test.txt | grep -w '\'

然而,如果我改变了一个文件,假设像:


select * from x;
c

它仍然显示文件包含'',但我希望这失败,因为我总是希望第一个字符是'',无论我从哪行开始。

我已经尝试使用head/cut,但无法验证。请提一些建议。

使用正则表达式检查第一行是否包含以。如果遇到的第一行不是以开头的,则退出

backslash_pat='^\'
num_lett_pat='[0-9a-Z*]'
while IFS= read -r line; do
if [[ $line =~ $backslash_pat ]]
then
echo "$line"
exit
elif [[ $line =~ $num_lett_pat ]]
then
exit
fi
done < test.txt

您可以使用dd

检查第一个字符是否为(我理解这是您想要的)
if [[ $(dd if=test.txt count=1 bs=1 2>/dev/null| xxd -c1 -ps) == 5c ]]
then
echo 'found'
fi

这适用于二进制文件(即不由行组成)。

检查man ddman xxd以了解使用的命令行选项。

最新更新