使用脚本将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/

10-15 06:32