使用脚本将cobol部分转换为pl / sql,我正在努力将cobol注释转换为Oracle注释。
线条看起来像
******************
因此,计划是解析文件中的每一行,如果第一个字符是星号,请在该行的开头添加一个双破折号。但是,星号是一个特殊字符,我似乎无法接受bash的处理。
有想法吗?
编辑。
cobol的示例部分。
************************
IDENTIFICATION DIVISION.
************************
PROGRAM-ID.
那些带有星号的行需要变成
--**********************
IDENTIFICATION DIVISION.
--**********************
我已经用各种迭代替换了$ firstChar,但是最后得到“找不到命令”,因为bash仍将星号作为命令而不是字符串字符读取。
#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
firstChar=$(cut -c-1 <<< "$line")
if [["$firstChar" == \**]]; then
echo "Asterisk found, replacing with two dashes"
fi
done < "$1"
最佳答案
您必须使用\
转义字符
if [[ $line == \** ]]
then
echo "-- whatever"
fi
第二个*是通配符,因此它将检查行是否以星号开头。
编辑:如果您仅比较第一个字符,则可以删除第二个
*
,该第二个用来表示字符串的其余部分。if [[ $firstChar == \* ]]; then
echo "Asterisk found..."
fi
关于linux - 用星号解析bash中的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32123232/