用于拆分字符串的 Shell 脚本
Shell Scripting 或 Shell Programming 就像任何其他编程语言一样。 shell 是一种特殊的程序,它提供了用户和操作系统之间的接口。
在 Linux/Unix 中,使用的默认 shell 是bash,而在 Windows 中,它是cmd (命令提示符)。我们使用终端来运行 shell 命令。 Shell 脚本以 . sh文件扩展名,我们可以在以下命令的帮助下运行脚本。
bash path/to/the/filename.sh
例子:
一个简单的 shell 程序来打印 Hello Geeks!!。
#! /bin/bash
# echo is used to print
echo "Hello Geeks!!"
在这里, #! /bin/bash用于让 Linux/Unix 知道它是一个 Bash 脚本,并使用驻留在 /bin 中的 bash 解释器来执行它。
输出:
用于拆分字符串的 Shell 脚本:
让我们以以下字符串为例讨论如何拆分字符串:
string = “Lelouch,Akame,Kakashi,Wrath”
And we would like to split the string by “,” delimiter so that we have :
- name=”Lelouch”
- name =”Akame”
- name=”Kakashi”
- name=”Wrath”
方法 1:使用 IFS(输入字段分隔符)。
IFS 代表内部字段分隔符或输入字段分隔符变量用于将字符串分隔为标记。
Original String :
string=”Lelouch,Akame,Kakashi,Wrath”
After Splitting :
name = Lelouch
name = Akame
name = Kakashi
name = Wrath
String保存输入字符串值和IFS变量作为我们将要分隔字符串的分隔符。 read -ra arr <<< "$ 字符串"将分隔的字符串转换成数组,然后我们使用for循环遍历数组并打印值。 arr 下标中的“@”表示我们正在遍历整个数组。
脚本 :
#! /bin/bash
# Given string
string="Lelouch,Akame,Kakashi,Wrath"
# Setting IFS (input field separator) value as ","
IFS=','
# Reading the split string into array
read -ra arr <<< "$string"
# Print each value of the array by using the loop
for val in "${arr[@]}";
do
printf "name = $val\n"
done
要运行脚本,请使用以下命令:
bash path/to/the/filename.sh
输出:
方法 2:不使用 IFS
假设输入字符串包含一个特定的单词“anime” ,我们想在看到“anime”时拆分字符串
string = “anime Bleach anime Naruto anime Pokemon anime Monster anime Dororo”
Output :
Anime name is = Bleach
Anime name is = Naruto
Anime name is = Pokemon
Anime name is = Monster
Anime name is = Dororo
我们可以使用Parameter Expansion来做到这一点。
脚本 :
#! /bin/bash
# Given string
string="anime Bleach anime Naruto anime Pokemon anime Monster anime Dororo"
# Syntax to replace all occurrences of "anime" with " "
arr=(${string//"anime"/ })
# Print each value of the array by using the loop
for val in "${arr[@]}";
do
printf "Anime name is = $val\n"
done
输出: