我已经开始使用本指南学习 bash 脚本:http : //www.tldp.org/LDP/abs/abs-guide.pdf
但是我被困在第一个脚本上:
cd /var/log
cat /dev/null > messages
cat /dev/null > wtmp
echo "Log files cleaned up."
Run Code Online (Sandbox Code Playgroud)
第 2 行和第 3 行在 Ubuntu 中做什么(我理解cat
)?它仅适用于其他 Linux 发行版吗?以 root 身份运行此脚本后,我得到的输出是Log files cleaned up.
但/var/log
仍包含所有文件。
我有以下简单的脚本:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {1..99..2}
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
如果我运行,输出sh file.sh
:
Bash version ...
{1..99..2}
Run Code Online (Sandbox Code Playgroud)
如果我运行,输出bash file.sh
:
Bash version 4.2.25(1)-release...
1
3
5
.
.
.
99
Run Code Online (Sandbox Code Playgroud)
我有两个疑问:
如果我写了一个shabang行指定的外壳,不应该将其与运行bash的我无论是使用sh file.sh
还是bash file.sh
?
我知道$BASH_VERSION
sh 无法识别,但是 for 循环有什么问题?为什么不打印数字?
我想用一个空格替换多个空格。我正在使用tr
它。但它也在用空格替换新行。我怎样才能避免它?
代码:
tr -s [:space:] ' '
Run Code Online (Sandbox Code Playgroud)
输入:
He llo
Wor ld
how are you
Run Code Online (Sandbox Code Playgroud)
所需输出:
He llo
Wor ld
how are you
Run Code Online (Sandbox Code Playgroud)
我的输出:
He llo Wor ld how are you
Run Code Online (Sandbox Code Playgroud)