写一个脚本,任意输入一个目录和一个字符串,对输入的字符串进行判断,如果字符串内容等于”ww”,则将该目录下的所有子目录删除,所有子文件拷贝到/var 目录下:如果字符串内容等于”rr”,则在该目录下创建 test1.txt 文件
#!/bin/bashif [ x$1 == x ]then read -p "请输入一个目录:" direlse dir=$1firead -p "请输入一个字符串:" str1echo $str1","$dirif [ -d $dir ]then case $str1 in "ww") for file in `ls $dir` do file_path=$dir/$file if test -f $file_path then cp $file_path /var elif test -d $file_path then rm -rf $file_path fi done ;; "rr") cd $dir &&`touch test1.txt` ;; *) echo "未知的输入,请输入rr或ww..." ;; esacelse echo "请输入一个目录..."fi
以下是按照您的要求编写的shell脚本,它接收一个目录和一个字符串作为输入,并根据字符串的内容执行相应的操作:
#!/bin/bash# 检查是否提供了目录作为参数if [ -z "$1" ]; then read -p "请输入一个目录: " direlse dir="$1"fi# 读取用户输入的字符串read -p "请输入一个字符串: " str1# 打印出输入的字符串和目录echo "$str1,$dir"# 检查目录是否存在if [ -d "$dir" ]; then case "$str1" in "ww") # 遍历目录下的所有文件和子目录 for file in "$dir"/*; do file_path="$file" if [ -f "$file_path" ]; then # 如果是文件,则拷贝到/var目录 cp "$file_path" /var/ elif [ -d "$file_path" ]; then # 如果是子目录,则删除它 rm -rf "$file_path" fi done ;; "rr") # 如果是"rr",则在目录中创建test1.txt文件 touch "$dir/test1.txt" ;; *) echo "未知的输入,请输入rr或ww..." ;; esacelse echo "请输入一个存在的目录..."fi
请注意,这个脚本有几个潜在的问题和改进点:
/var
目录可能需要root权限,如果脚本不是以root用户身份运行,可能会失败。/var
目录已满,则cp
命令会失败。/var
目录下已经存在与源目录中同名的文件,则它们会被覆盖。rr
的情况下,cd $dir && touch test1.txt
可以简化为touch "$dir/test1.txt"
,因为touch
命令可以直接指定文件路径。ls
和for
循环可能不是遍历目录的最有效方式,特别是当目录包含大量文件时。使用find
命令或其他更高效的工具可能更为合适。在实际使用中,需要根据具体的场景和需求来调整和完善这个脚本。
本文向大家介绍写出健壮Bash Shell脚本的一些技巧总结,包括了写出健壮Bash Shell脚本的一些技巧总结的使用技巧和注意事项,需要的朋友参考一下 许多人用Shell脚本完成一些简单任务,而且变成了他们生命的一部分。不幸的是,shell脚本在运行异常时会受到非常大的影响。在写脚本时将这类问题最小化是十分必要的。本文中我将介绍一些让bash脚本变得健壮的技术。 使用set -u 你因为没有对
第一个shell脚本 编写 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了。 输入一些代码,第一行一般是这样: #!/bin/bash #!/usr/bin/php “#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行。 运行 运行Shell脚本有两种方法: 作为可执行程序
问题内容: 我正在尝试为变量分配数组长度。 它说找不到len命令。为什么? 问题答案: 变量名和赋值运算符之间不能有空格。如果这样做,会将变量名称视为命令。 尝试:
问题内容: 我想从下面的程序中运行一个shell脚本,但它似乎无能为力。我已经直接在linux终端中运行了相同的命令,它运行正常,所以我猜这是我的Java代码。如您所见,我首先使用PrintWriter将命令写入Shell脚本,但我希望这不会影响Shell脚本本身的运行。任何帮助,将不胜感激! 问题答案: 您应该使用返回的结果。 将命令作为单独的进程执行,并返回类型为的对象。您应该调用以便程序等待
我在尝试编译 eXo 平台时遇到麻烦。 错误消息是: < code >原因:java.io.IOException:无法运行程序“/exo/platform-public-distributions-develop/PLF-community-Tomcat-standalone/target/platform-community-5.0 . x-SNAPSHOT/platform-communit
问题内容: 我正在尝试编写一个bash shell脚本,该脚本在用户定义的时间内消耗嵌入式设备上的大量RAM。不使用数组怎么办? 问题答案: 即使不支持传统的Bash数组,也仍然可以使用特定Shell中内置的命令来创建类似数组的变量。 以下示例脚本基于我在嵌入式Linux项目中使用BusyBox时执行的一些脚本。 BusyBox使用Almquist Shell (也称为A Shell,ash和sh