在 POSIX shell 中使用while 循环来处理文本通常被认为是不好的做法吗?
正如Stéphane Chazelas 所指出的,不使用 shell 循环的一些原因是概念、可靠性、易读性、性能和安全性。
这个答案解释了可靠性和易读性方面:
while IFS= read -r line <&3; do
printf '%s\n' "$line"
done 3< "$InputFile"
Run Code Online (Sandbox Code Playgroud)
为了性能,从文件或管道读取时,while循环和读取非常慢,因为内置的read shell一次读取一个字符。
怎么样的概念和安全性方面?
试图弄清楚如何将参数转换为整数以执行算术运算,然后将其打印出来,例如 for addOne.sh:
echo $1 + 1
>>sh addOne.sh 1
prints 1 + 1
Run Code Online (Sandbox Code Playgroud) 我正在分析一些网站负责人,htop并注意到以下内容
Uptime: 301 days(!), 23:47:39
Run Code Online (Sandbox Code Playgroud)
这是什么(!)意思?
我有一个文件,f1.txt:
ID Name
1 a
2 b
3 g
6 f
Run Code Online (Sandbox Code Playgroud)
空格数不固定。仅使用一个空格替换所有空格的最佳方法是什么tr?
这是我到目前为止:
cat f1.txt | tr -d " "
Run Code Online (Sandbox Code Playgroud)
但输出是:
IDName
1a
2b
3g
6f
Run Code Online (Sandbox Code Playgroud)
但我希望它看起来像这样:
ID Name
1 a
2 b
3 g
6 f
Run Code Online (Sandbox Code Playgroud)
请尽量避免sed。
我经常听到人们将 Linux 内核称为 Linux 内核映像,而且我似乎无法在任何搜索引擎上找到有关为什么将其称为映像的答案。
当我想到图像时,我只能想到两件事,要么是磁盘副本,要么是照片。它肯定不是照片图像,为什么它被称为图像?
我尝试使用该选项拖尾两个文件:
tail -0f file1.log -0f file2.log
Run Code Online (Sandbox Code Playgroud)
在 Linux 中,我看到一个错误“tail : 一次只能处理一个文件”。
在 AIX 中,我看到错误为“无效选项”。
当我使用时,这很好用:
tail -f file1 -f file 2
Run Code Online (Sandbox Code Playgroud)
在 Linux 中,但不在 AIX 中。
我希望能够使用AIX/Linux-0f或-f在 AIX/Linux 中拖尾多个文件
multitail 在这些操作系统中的任何一个中都无法识别。
我有一个脚本看起来像:
c=0
for f in */*; do
cp -v "$f" "/myhome/CE$(printf '%0*d' 2 $BATCHNUM)-new-stuctures_extracted/test-$(printf '%0*d' 5 $c)"
c=$((c=c+1))
done
Run Code Online (Sandbox Code Playgroud)
但是,用户必须提供一个变量调用 BATCHNUM,否则我需要强制此脚本停止运行。如果我可以强制调用此脚本的脚本也停止(甚至调用调用此脚本的 #2 脚本的 #1 脚本)会更好。
以下是来自pastebin的随机文件的命令:
wget -qO - http://pastebin.com/0cSPs9LR | wc -l
350
wget -qO - http://pastebin.com/0cSPs9LR | sort -u | wc -l
287
wget -qO - http://pastebin.com/0cSPs9LR | sort | uniq | wc -l
287
wget -qO - http://pastebin.com/0cSPs9LR | sort | uniq -u | wc -l
258
Run Code Online (Sandbox Code Playgroud)
手册页不清楚-u标志在做什么。有什么建议吗?
我有一个 CRONTAB 条目,如下所示。有人能告诉我下面的语句到底在做什么吗?
1 0 * * * /vol01/sites/provisioning/MNMS/45627/45627.sh1 >> /vol01/sites/provisioning/MNMS/45627/output/cron.log 2>&1
Run Code Online (Sandbox Code Playgroud)