相关疑难解决方法(0)

如何使用文件名参数或默认为标准输入、标准输出(简要)

我想以更简洁、更灵活的方式将文件名作为 bash 脚本中的参数处理,为输入和输出文件名采用 0、1 或 2 个参数。

  • 当 args = 0 时,从标准输入读取,写入标准输出
  • 当 args = 1 时,从 $1 读取,写入 stdout
  • 当 args = 2 时,从 $1 读取,写入 $2

如何使 bash 脚本版本更简洁、更短?

这是我现在拥有的,有效,但不干净,

#!/bin/bash
if [ $# -eq 0 ] ; then #echo "args 0"
    fgrep -v "stuff"
elif [ $# -eq 1 ] ; then #echo "args 1"
    f1=${1:-"null"}
    if [ ! -f $f1 ]; then echo "file $f1 dne"; exit 1; fi
    fgrep -v "stuff" $f1 
elif [ $# …
Run Code Online (Sandbox Code Playgroud)

bash stdout stdin arguments

5
推荐指数
1
解决办法
4361
查看次数

如何在-exec脚本中增加COUNTER?

上下文:zsh Catalina MacOS:

可执行脚本BatesStamp使用 imagemagick 将数字标记到 jpg 文件:

# BatesStamp: OVERWRITES and stamps ONE file with COUNTER  (upper left corner)
# usage  ./BatesStamp  COUNTER  PATH_FILE   
# to be used with find & -exec: https://unix.stackexchange.com/a/96239/182280   


COUNTER=$1     # 1st argument = number to be stamped upon .jpg file
PATH_FILE=$2   # 2nd argument = /path_to_file/Filename.jpg

convert $PATH_FILE  -auto-orient -gravity northWest  -font "Arial-Bold-Italic" -pointsize 175 \
   -fill red  -annotate +30+30   "$COUNTER"  $PATH_FILE;
   ((COUNTER++))  #/sf/answers/1472460251/
   echo "watermarked i= $COUNTER  $PATH_FILE"
Run Code Online (Sandbox Code Playgroud)

目标是用唯一的编号标记目录树中的所有 .jpg 文件。我相信每次调用 …

find shell-script exec

4
推荐指数
1
解决办法
580
查看次数

标签 统计

arguments ×1

bash ×1

exec ×1

find ×1

shell-script ×1

stdin ×1

stdout ×1