我有一个名为parameters.txt
的文件,其内容如下:
sheet_name:TEST
sheet_id:CST
sheet_access:YES
我有一个shell脚本从parameters.txt
文件中提取此文本。它使用:
作为parameters.txt
文件的每一行的分隔符,并存储:
中var1
的剩余内容以及:
中var2
的任何内容。 {1}}。我希望matched
在var1
存储sheet_name
时not matched
和sheet_name
存储matched
。以下是我的代码,无论var1
存储什么,都会打印filename=parameters.txt
IFS=$'\n' # make newlines the only separator
for j in `cat $filename`
do
var1=${j%:*} # stores text before :
var2=${j#*:} # stores text after :
if [ “$var1” == “sheet_name” ]; then
echo ‘matched’
else
echo “not matched“
fi
done
:
TestCase
我做错了什么?请帮助。
答案 0 :(得分:1)
你无用的猫。但是有些[ shell parameter expansion ]怎么样?
while read line
do
if [[ "${line%:*}" = "sheet_name" ]] #double quote variables deals word splitting
then
echo "matched"
fi
done<parameters.txt
会完全按照您的意愿行事。
给您留言
&#34;要读取行而不是单词,管道/重定向到&#39;而读取&#39; 。环路&#34;
检查来自shellcheck的[ this ]注释。
答案 1 :(得分:0)
这个怎么样?
class X {
// Int -> () function
func foo(number num: Int) { print("function \(num)")}
// Int -> () closure
let foo: (Int) -> () = { print("closure \($0)")}
}
let x = X()
x.foo(2) // x.foo(num: Int)
x.foo(3) // x.foo