我正在尝试获取变量的第一个字符,但是我遇到了错误的替换错误.任何人都可以帮我修复它吗?
代码是:
while IFS=$'\n' read line
do
if [ ! ${line:0:1} == "#"] # Error on this line
then
eval echo "$line"
eval createSymlink $line
fi
done < /some/file.txt
Run Code Online (Sandbox Code Playgroud)
我做错了什么或有更好的方法吗?
- 编辑 -
根据要求 - 这是一些存储在/some/file.txt中的示例输入
$MOZ_HOME/mobile/android/chrome/content/browser.js
$MOZ_HOME/mobile/android/locales/en-US/chrome/browser.properties
$MOZ_HOME/mobile/android/components/ContentPermissionPrompt.js
Run Code Online (Sandbox Code Playgroud)
fed*_*qui 16
要获取变量的第一个字符,您需要说:
v="hello"
$ echo "${v:0:1}"
h
Run Code Online (Sandbox Code Playgroud)
但是,您的代码有语法错误:
[ ! ${line:0:1} == "#"]
# ^-- missing space
Run Code Online (Sandbox Code Playgroud)
所以这可以做到这一点:
$ a="123456"
$ [ ! "${a:0:1}" == "#" ] && echo "doesnt start with #"
doesnt start with #
$ a="#123456"
$ [ ! "${a:0:1}" == "#" ] && echo "doesnt start with #"
$
Run Code Online (Sandbox Code Playgroud)
它也可以这样做:
$ a="#123456"
$ [ "$(expr substr $a 1 1)" != "#" ] && echo "does not start with #"
$
$ a="123456"
$ [ "$(expr substr $a 1 1)" != "#" ] && echo "does not start with #"
does not start with #
Run Code Online (Sandbox Code Playgroud)
根据您的更新,这对我有用:
while IFS=$'\n' read line
do
echo $line
if [ ! "${line:0:1}" == "#" ] # Error on this line
then
eval echo "$line"
eval createSymlink $line
fi
done < file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15106 次 |
| 最近记录: |