当我尝试运行这个脚本时出现这个错误:operating extra/home/ubuntu/Desktop/Destino/,我不知道为什么,请有人帮助我。
#!/bin/bash
input="/home/ubuntu/Desktop/Output/SAIDA.txt"
dt=`date +"%Y%m%d%H%M%S"`
layout='C'
if [ -e "$input" ] ; then
header=$(head -n 1 $input)
export header
tail -n +2 $input | split -l 99 -d --additional-suffix=.txt \ --filter='{ printf %s\\n "$header"; cat; }' >/home/ubuntu/Desktop/Destino/$FILE - NOMENCLATURA_${dt}_
for arquivo in ´Is/home/ubuntu/Desktop/*.txt´
do
NOME= ´cat $arquivo | cut -d "." -f1´
touch/home/ubuntu/Desktop/Destino/$NOME.cfg
echo $dt > $NOME.cfg
echo $layout > $NOME.cfg
done
else
echo "The input file does not exist."
fi
最佳答案
您的脚本中有一些奇怪的引号字符。要替换命令的输出,请用 $()
或反引号将其包装起来,而不是 ´
字符。
for arquivo in ´Is/home/ubuntu/Desktop/*.txt´
我想 Is
应该是 ls
,但您在它后面省略了空格。但是不需要解析ls
的输出,直接使用通配符即可。
for arquivo in /home/ubuntu/Desktop/*.txt
在这一行:
tail -n +2 $input | split -l 99 -d --additional-suffix=.txt \ --filter='{ printf %s\\n "$header"; cat; }' >/home/ubuntu/Desktop/Destino/$FILE - NOMENCLATURA_${dt}_
由于空格,您需要将输出文件名放在引号中。
tail -n +2 $input | split -l 99 -d --additional-suffix=.txt \ --filter='{ printf %s\\n "$header"; cat; }' >"/home/ubuntu/Desktop/Destino/$FILE - NOMENCLATURA_${dt}_"
此外,FILE
变量未设置,您需要提前分配它。
在这一行:
NOME= ´cat $arquivo | cut -d "." -f1´
您再次使用错误类型的引号来捕获命令的输出。此外,=
和您要分配的值之间不能有空格。应该是:
NOME=$(cat $arquivo | cut -d "." -f1)
无需执行export header
。该变量仅在此脚本中使用,未在任何子进程中使用。
关于linux - 错误 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37011858/