相关疑难解决方法(0)

了解 IFS

本站点和 StackOverflow 上的以下几个线程有助于理解IFS工作原理:

但我还有一些简短的问题。我决定在同一篇文章中问他们,因为我认为这可能有助于更好的未来读者:

一季度。 IFS通常在“字段拆分”的上下文中讨论。是场分裂一样的分词

Q2: POSIX 规范

如果IFS 的值为空,则不进行字段拆分。

设置IFS=是否与设置IFS为空相同?这也是将其设置为 an 的意思empty string吗?

Q3:在 POSIX 规范中,我阅读了以下内容:

如果没有设置 IFS,shell 的行为就像 IFS 的值是 <space>, <tab> and <newline>

假设我想恢复IFS. 我怎么做?(更具体地说,我如何引用<tab><newline>?)

Q4:最后,这段代码如何:

while IFS= read -r line
do    
    echo $line
done < /path_to_text_file
Run Code Online (Sandbox Code Playgroud)

如果我们将第一行更改为

while read -r line # Use …
Run Code Online (Sandbox Code Playgroud)

shell

83
推荐指数
3
解决办法
11万
查看次数

测试数组中是否存在重复值

我正在尝试找到一种简单的方法来测试数组中的重复值。能够识别具有重复项的特定行固然很好,但并非完全必要,但重要的一点是能够看到存在重复项。

我有一个数组,$key_array其中包含一些数字:

# echo ${key_array[@]}
1 2 3 4 3 3
Run Code Online (Sandbox Code Playgroud)

该数组可以有任意数量的数字,其中一些数字可能与其他数字重复。它们只是整数。(以 a 开头的数字0,例如03,根本不应该进入数组,但万一发生这种情况,捕获303作为彼此的重复项比将它们视为不同的数字更好。)

我需要确定这些数字是否重复。我想如果没有别的办法的话,这可以通过退出代码来完成。我所追求的是这样的:

if $(some command); then
 echo "Array contains duplicates."
 exit 1
fi
$(commands to run after duplicate check)
Run Code Online (Sandbox Code Playgroud)

最后的想法是,如果存在重复项,脚本会通知用户并退出(对于识别重复项在哪里并不是非常重要,只需告诉用户检查重复项就足够了),或者如果没有任何重复项,它继续运行并运行许多其他东西。

我怎样才能最好地完成这个任务?

shell scripting bash

2
推荐指数
1
解决办法
6630
查看次数

如何遍历 ls 返回的文件

第一次和第二次调用是为了比较。这是我试图开始工作的第三次。

$ ls -a1 *mp3
DaftPunk_VeridisQuo.mp3
French79_AfterParty.mp3
French79_BetweentheButtons.mp3
French79_Hometown.mp3
$ find . -maxdepth 1 -type f -name '*mp3'
./French79_AfterParty.mp3
./French79_Hometown.mp3
./DaftPunk_VeridisQuo.mp3
./French79_BetweentheButtons.mp3
$ for x in "$(ls -a *mp3)"; do mv "./$x" "./electro_$x"; done
mv: cannot stat './DaftPunk_VeridisQuo.mp3'$'\n''French79_AfterParty.mp3'$'\n''French79_BetweentheButtons.mp3'$'\n''French79_Hometown.mp3': No such file or directory
Run Code Online (Sandbox Code Playgroud)

ls

0
推荐指数
1
解决办法
1171
查看次数

标签 统计

shell ×2

bash ×1

ls ×1

scripting ×1