将文件内容转换为小写或大写的 Shell 脚本
在这里,我们将看到如何将文件转换为用户指定的小写或大写。我们将编写一个 POSIX 兼容的 shell 脚本,它将在输入文件后为我们提供所需的输出,例如sample.txt,一个由小写、大写、数字和特殊字符组合而成的文本文件
例子:
File Content
this is lowercase
THIS IS UPPERCASE
$P3C14L C#4R4CT3R$
1234567890
OUTPUT
Uppercase
THIS IS LOWERCASE
THIS IS UPPERCASE
$P3C14L C#4R4CT3R$
1234567890
Lowercase
this is lowercase
this is uppercase
$p3c14l c#4r4ct3r$
1234567890
方法:
- 询问用户选择他们是否想从大写转换为小写,反之亦然
- 阅读选择
- 根据选择进入 Switch 案例。如果选择不是上述选项,则退出时。
- 询问用户文件名
- 检查文件是否存在,如果不存在则以错误代码 1 退出,否则继续
- 根据先前选择的用户选择翻译文件内容并使用 tr 命令打印输出。
- 脚本结束
外壳脚本
#!/bin/sh
# shebang to specify that this is an shell script
# Function to get File
getFile(){
# Reading txtFileName to convert it's content
echo -n "Enter File Name:"
read txtFileName
# Checking if file exist
if [ ! -f $txtFileName ]; then
echo "File Name $txtFileName does not exists."
exit 1
fi
}
clear
echo "1. Uppercase to Lowercase "
echo "2. Lowercase to Uppercase"
echo "3. Exit"
echo -n "Enter your Choice(1-3):"
read Ch
case "$Ch" in
1)
# Function Call to get File
getFile
# Converting to lower case if user chose 1
echo "Converting Upper-case to Lower-Case "
tr '[A-Z]' '[a-z]' <$txtFileName
;;
2)
# Function Call to get File
getFile
# Converting to upper case if user chose 2
echo "Converting Lower-Case to Upper-Case "
tr '[a-z]' '[A-Z]' <$txtFileName
;;
*) # exiting for all other cases
echo "Exiting..."
exit
;;
esac
输出:
使用 cat 命令显示示例文本文件的内容,并通过使用 chmod 命令使其可执行来修改我们的脚本。