ctOS_ 发表于 2020-4-27 21:00

[shell脚本求助]不存在的未知问题?

本帖最后由 ctOS_ 于 2020-4-27 21:37 编辑

这是今天教linux的老师布置的作业

这是我敲的代码

这是输出结果(满屏的文件不存在)

希望这方面的大佬帮忙看看问题出在哪里



另外,在输出完程序之后,ls里确实有一个txtfiles目录

那怎么会不存在呢?

laycher 发表于 2020-4-27 21:18

touch 后面的引号都去了。

ctOS_ 发表于 2020-4-27 21:25

本帖最后由 ctOS_ 于 2020-4-27 21:30 编辑

laycher 发表于 2020-4-27 21:18
touch 后面的引号都去了。

如果我理解的没错的话,好像不太行

chaizy1 发表于 2020-4-27 21:27

好厉害啊!虽然看不懂

ctOS_ 发表于 2020-4-27 21:27

laycher 发表于 2020-4-27 21:18
touch 后面的引号都去了。

#!/bin/bash
isTextDir(){
      if [ -e ~/txtfiles ]
      then
                ls -l "~/txtfiles"
      else
                mkdir "~/txtfiles"
      fi
}
makeTxt(){
      prefix=`date +%Y"."%m"."%d"-"`
      for((i=1;i<=10;i++))
      do
                touch ~/txtfiles/$prefix$i.txt
      done
}
chmodTxt(){
      prefix=`date +%Y"."%m"."%d"-"`
      for((i=1;i<=10;i++))
      do
                chmod 660 "~/txtfiles/"$prefix$i".txt"
      done
}
writeTxt(){
      prefix=`date +%Y"."%m"."%d"-"`
      for((i=1;i<=10;i++))
      do
                name=$prefix$i".txt"
                echo "contents:"$name > "~/txtfiles/"$name
      done
}
bakTxt(){
      path="~/txtfiles/"
      prefix=`date +%Y"."%m"."%d"-"`
      for((i=1;i<=10;i++))
      do
                name=$path$prefix$i".txt"
                mv $name $name".bak"
                arr=$arr$name".bak "
      done
      tar -cvzf "txtfile.tar.gz" $arr
}

isTextDir
makeTxt

这是代码
大佬您看看

yushangwl 发表于 2020-4-27 22:09

#!/bin/bash
isTextDir(){
      if [ -d ~/txtfiles ]
      then
                ls -l ~/txtfiles
      else
                mkdir ~/txtfiles
      fi
}
makeTxt(){
      prefix=`date +%Y"."%m"."%d"-"`
      for((i=1;i<=10;i++))
      do
                touch ~/txtfiles/$prefix$i.txt
      done
}
chmodTxt(){
      prefix=`date +%Y"."%m"."%d"-"`
      for((i=1;i<=10;i++))
      do
                chmod 660 "~/txtfiles/"$prefix$i".txt"
      done
}
writeTxt(){
      prefix=`date +%Y"."%m"."%d"-"`
      for((i=1;i<=10;i++))
      do
                name=$prefix$i".txt"
                echo "contents:"$name > "~/txtfiles/"$name
      done
}
bakTxt(){
      path="~/txtfiles/"
      prefix=`date +%Y"."%m"."%d"-"`
      for((i=1;i<=10;i++))
      do
                name=$path$prefix$i".txt"
                mv $name $name".bak"
                arr=$arr$name".bak "
      done
      tar -cvzf "txtfile.tar.gz" $arr
}

isTextDir
makeTxt

yushangwl 发表于 2020-4-27 22:18

本帖最后由 yushangwl 于 2020-4-27 22:21 编辑

ctOS_ 发表于 2020-4-27 21:27
#!/bin/bash
isTextDir(){
      if [ -e ~/txtfiles ]

楼上已经贴出代码了。首先判断文件夹用d参数e也可以,还有就是~是特殊符号不能用引号包围他,否则会被认为是普通字符,所以chmod那行也是有问题的你自己改一下,还有变量如果放在引号里面可以用${var}的方式和字符拼接比如“a${var}b”

ctOS_ 发表于 2020-4-27 22:38

yushangwl 发表于 2020-4-27 22:18
楼上已经贴出代码了。首先判断文件夹用d参数e也可以,还有就是~是特殊符号不能用引号包围他,否则会被认 ...

谢谢您的耐心解答{:301_999:}

yushangwl 发表于 2020-4-28 00:04

本帖最后由 yushangwl 于 2020-4-28 00:06 编辑

ctOS_ 发表于 2020-4-27 22:38
谢谢您的耐心解答
对了其实创建10个文件可以不用循环,chmod也可以用
touch $(date "+%Y-%m-%d")-{1..10}.txt

ctOS_ 发表于 2020-4-28 17:18

yushangwl 发表于 2020-4-28 00:04
对了其实创建10个文件可以不用循环,chmod也可以用
touch $(date "+%Y-%m-%d") ...

长见识了,谢谢
页: [1]
查看完整版本: [shell脚本求助]不存在的未知问题?