linux - 错误 Shell 脚本

标签 linux bash shell ubuntu scripting

当我尝试运行这个脚本时出现这个错误: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/

相关文章:

linux - 在 Linux 上打开烟花 PNG

c - 在 C 中获取 Shell 命令的结果

bash - 如何使用 SED 更改多个文件中的第 n 行?

Bash shell 编程 echo 而不跳到下一行

linux - 如何比较复杂的Linux文本文件中的数字?

bash - 如果存储在局部变量中,函数调用的退出代码将被忽略

linux - shell 和变量中的 Expr 和日期

android - 如何以正确的方式将 UTF8 格式化为主题 header ?

linux - Perl 的 DateTime::Format::Strptime 中的 parse_datetime 方法无法解析时区名称

linux - 如何检查进程是否在linux中运行