while read p; do
echo $p
done < file.txt
这段代码可以读取file.txt中的所有行,除了最后一行以外的任何想法.谢谢
特别4.0.0是在 Bash 版本中,是否有任何方法可以解决在启用$@时使用空引发未绑定变量错误的问题set -u?
考虑以下:
#!/usr/bin/env bash-4.0.0-1
set -xvu
echo "$BASH_VERSION"
echo "${BASH_VERSINFO[@]}"
main () {
printf '%q\n' "${@:-}"
}
main "${@:-}"
Run Code Online (Sandbox Code Playgroud)
当我提供一组空参数时,给我以下输出:
neech@nicolaw.uk:~ $ ./test.sh
echo "$BASH_VERSION"
+ echo '4.0.0(1)-release'
4.0.0(1)-release
echo "${BASH_VERSINFO[@]}"
+ echo 4 0 0 1 release x86_64-unknown-linux-gnu
4 0 0 1 release x86_64-unknown-linux-gnu
main () {
printf '%q\n' "${@:-}"
}
main "${@:-}"
./test.sh: line 12: $@: unbound variable
Run Code Online (Sandbox Code Playgroud)
我只在 Bash 版本中看到这种行为4.0.0。
我希望使用变量替换${@:-}可以让我解决这个问题,但似乎不是。
有没有办法解决这个问题?
Bash 4中有新选项:checkjobs和autocd.但是,我没有找到他们的文档
man bash
Run Code Online (Sandbox Code Playgroud)
我跑得不成功
{checkjobs,autocd}
Run Code Online (Sandbox Code Playgroud)
我在发行说明中找到了以下内容
There is a new `checkjobs` option that causes the shell to check for and
report any running or stopped jobs at exit
Run Code Online (Sandbox Code Playgroud)
和
There is a new `autocd` option that, when enabled, causes bash to attempt
to `cd` to a directory name that is supplied as the first word of a
simple command.
Run Code Online (Sandbox Code Playgroud)
你怎么能使用autocd和checkjobs?
如果我有一个字符串var="root/Desktop",我如何确定varvar 是否包含一个'/'字符?
带有正则表达式检查的跟随代码不会在bash 3和bash 4之间输出相同的结果:
TESTCASE="testcase0"
[[ ${TESTCASE} =~ "^testcase[0-9\.]*$" ]]
echo $?
echo ${BASH_REMATCH}
Run Code Online (Sandbox Code Playgroud)
bash 3.2输出一个成功的正则表达式检查:
0
testcase0
Run Code Online (Sandbox Code Playgroud)
bash 4.1未通过正则表达式检查:
1
<empty line>
Run Code Online (Sandbox Code Playgroud)
我无法确定表达式失败的正则表达式模式中的哪个位置.我需要两个版本的bash兼容的代码.
有谁知道我的问题是什么?
谢谢 !