标签: sh

如何在 Unix Bourne Shell 中获取去年的日期?

我知道获取昨天、1 个月前等日期的方法。

如何获取 1 年前的日期?

例如:

当前日期20120802和去年的日期20110802

当然我可以将 改为20122011但是有没有一种不需要手动干预的方法呢?

date sh

0
推荐指数
1
解决办法
5891
查看次数

从 Shell 脚本 /bin/sh 运行 FFMPEG

我正在尝试设置一个 Shell 脚本以在自动化监视文件夹中工作...

除了 Run Shell Scrip 部分之外,一切正常...

本质上,当文件出现在监视文件夹中时,它会运行调用 FFMPEG 的 shell 脚本,然后将文件移动到存档文件夹以安全保存。然而现在自动化告诉我一切正常,但现在正在创建文件。

我将 Shell 设置为 /bin/sh 并将 Pass 输入设置为参数

这是我的脚本:

for f in "$@"
do
name=$(basename "$f")
dir=$(dirname "$f")
ffmpeg -i "$f" -b 250k -strict experimental -deinterlace -vcodec h264 -acodec aac "$dir/mp4/${name%.*}.mp4"
echo "$dir/mp4/${name%.*}.mp4"
done
Run Code Online (Sandbox Code Playgroud)

它确实回显了正确的文件名,但实际上并不运行 ffmpeg

我已经尝试-exec在它之前添加,就像我在一些脚本中看到的那样,但仍然没有......

shell ffmpeg sh

0
推荐指数
1
解决办法
2万
查看次数

在 bash 中判断三角形是否等腰

当三角形为等腰三角形时,如何总结这段代码?

  1 #!/bin/bash
  2 
  3 read x y z
  4 
  5 if [[ x -eq z ]] && [[ x -eq y ]] && [[ y -eq z ]]; then
  6   echo EQUILATERAL
  7 elif [[ x -eq z ]] && [[ x -eq y ]]
  8 then
  9   echo ISOSCELES
 10 elif [[ y -eq z ]] && [[ y -eq x ]]
 11 then
 12   echo ISOSCELES
 13 elif [[ z -eq x ]] && [[ z -eq …
Run Code Online (Sandbox Code Playgroud)

bash shell if-statement sh

0
推荐指数
1
解决办法
6038
查看次数

sed 无法按预期使用脚本中的变量

我有一个小脚本可以做一些事情global在各种文件中进行一些字符串替换。应该这样做,sed以便仅更改受影响的行。

\n\n

准备:

\n\n
#!/bin/sh\nfind="M\xc3\xbccke Motorsport"\nreplace="M\xc3\xbccke Motorsport Racing Team"\nfile="/Users/meyer/Dropbox/Dev/App Framework iOS/dev/myfile.txt"\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我在脚本中出现问题的行:

\n\n
sed -i s/"$find"/"$replace"/g "$file"\n
Run Code Online (Sandbox Code Playgroud)\n\n

不起作用(sed: 1: "/Users/meyer/Dropb ...": invalid command code o)。下一步尝试:

\n\n
sed -i \'s/\'"$find"\'/\'"$replace"\'/g\' "$file"\n
Run Code Online (Sandbox Code Playgroud)\n\n

不起作用(sed: 1: "/Users/meyer/Dropb ...": invalid command code o)。下一步尝试:

\n\n
sed -i "s/$find/$replace/g" "$file"\n
Run Code Online (Sandbox Code Playgroud)\n\n

不起作用(sed: 1: "/Users/meyer/Dropb ...": invalid command code o)。下一步尝试:

\n\n
sed -i s/$find/$replace/g "$file"\n
Run Code Online (Sandbox Code Playgroud)\n\n

不起作用(sed: 1: "Motorsport/M\xc3\xbccke": invalid command code M). …

linux variables sed sh

0
推荐指数
1
解决办法
2756
查看次数

如何在 Linux shell 脚本中从 json 键值对获取值

你好,我正在写一个小 shell 脚本。在那里我使用curl命令来调用api。它返回的是扫描的状态。

{"status":"14"}
Run Code Online (Sandbox Code Playgroud)

我想获取这个状态并检查它是否小于100;这就是我到目前为止所做的

    a=0

    while [ $a -lt 100 ]
    do

        curlout=$(curl "http://localhost:9090/JSON/spider/view/status/?zapapiformat=JSON&scanId=0");
        echo "$curlout";
       a=`expr $a + 1`
    done
Run Code Online (Sandbox Code Playgroud)

我想要做的是将状态分配给 $a; 如何读取这个json以获取shell脚本中的值

linux bash shell json sh

0
推荐指数
1
解决办法
7093
查看次数

有没有办法内联 Unicode 转义序列?

这有效:

ghost=$'\U1F47B'
PROMPT='time: %T $ghost > '
Run Code Online (Sandbox Code Playgroud)

但是有没有办法内联 Unicode 字符的十六进制版本呢?

unicode bash hex zsh sh

0
推荐指数
1
解决办法
873
查看次数

在 Makefile 中创建多行 echo 块

我正在尝试为一个项目编写一个简单的 Makefile,并使用一些 ASCII 艺术作为标题,但是当我运行它时,我不断收到错误。有没有办法添加多行 echo 语句而不是 @echoing 每行?这可能不会给我带来错误,比如BOF-之类EOF的东西?

我所拥有的是;

.PHONY: all

info: header

header:
    clear
    @echo "___________              __   "
    @echo "\__    ___/___   _______/  |_ "
    @echo "  |    |_/ __ \ /  ___/\   __\"
    @echo "  |    |\  ___/ \___ \  |  |  "
    @echo "  |____| \___  >____  > |__|  "
    @echo "             \/     \/        "
Run Code Online (Sandbox Code Playgroud)

当我运行它时,出现以下错误;

___________              __
\__    ___/___   _______/  |_
/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/bin/sh: …
Run Code Online (Sandbox Code Playgroud)

bash makefile sh

0
推荐指数
1
解决办法
1132
查看次数

如何在shell脚本中分割路径来获取目录

我正在尝试分割文件的路径以获取目录名称,以检查该目录是否存在于新位置或不使用 shell 脚本。

我尝试使用

cf=src/classes/CarExperience.cls
echo ${cf%/*} 
echo ${cf##/*/}
echo ${cf#/*/*/}
echo ${cf%/*}

echo $(dirname "$cf")
Run Code Online (Sandbox Code Playgroud)

但这些都没有给我想要的结果

期望的结果是在 src 之后获取部分并检查该内部目录是否存在。cf=src/classes/CarExperience.cls directory_name=classes

感谢在这方面的任何帮助。

shell sh

0
推荐指数
1
解决办法
944
查看次数

如何将参数传递给 make 规则?

假设我有一个使用 make 安装的 python 项目。我希望无需先安装即可运行该项目。所以我创建了这个 make 规则:

run:
    @echo "Running projectname"
    @PYTHONPATH=${PYTHONPATH}:$(abs_srcdir)/..; ./projectname
Run Code Online (Sandbox Code Playgroud)

Where./projectname运行一个简单的 python 脚本来设置和运行项目,但这在这里并不重要。像这样,我可以简单地make run在项目的根文件夹中执行来执行和测试我的应用程序,它工作得很好。现在,我想将一些命令行参数传递给程序。我试过了make run --help,它只是打印了make帮助文本。运行make run -- --help打印

run:
    @echo "Running projectname"
    @PYTHONPATH=${PYTHONPATH}:$(abs_srcdir)/..; ./projectname
Run Code Online (Sandbox Code Playgroud)

应用程序运行,在我退出后,make尝试执行一个 target --help

现在,我如何通过例如将--help参数传递给我的应用程序make

command-line arguments makefile sh command-line-arguments

0
推荐指数
1
解决办法
22
查看次数

如何将第二个单词添加为文件中每行的编号?

我正在尝试添加所有的钱

$ cat samplemoney.txt
Company1 100
Company2 200
Company3 100
Company4 300
Company5 200
Run Code Online (Sandbox Code Playgroud)

以下是shell脚本

#!/bin/sh
sum=0;
while read l;
do
IFS=' ' read -r -a array<<< "$l"
a=${array[1]}
sum=`expr $sum+$a`
done<samplemoney.txt
echo $sum
Run Code Online (Sandbox Code Playgroud)

输出获取:

0+100+200+100+300
Run Code Online (Sandbox Code Playgroud)

所需输出:

900
Run Code Online (Sandbox Code Playgroud)

注意 - 在 Windows 上使用 Git Bash

bash shell sh

0
推荐指数
2
解决办法
61
查看次数