小编Dan*_*and的帖子

awk替换shell变量

我正在努力使用awk替换,由于某种原因,以下代码不能替代任何东西,它只是打印输出不变.谁能看到我在这里失踪的东西?任何帮助都会非常适合!(PS!$ DOCPATH和$ SITEPATH是shell变量,它们在我的awk设置中完美运行).

awk -v docpath="$DOCPATH" -v sitepath="$SITEPATH" '{ sub( /docpath/, sitepath ) } { print }'
Run Code Online (Sandbox Code Playgroud)

variables bash awk substitution

7
推荐指数
1
解决办法
8818
查看次数

在函数内部使用Bash间接变量赋值

我有一个脚本,用户输入需要进行评估数次,该解决方案IM工作就是把评估位转换成函数,只需调用函数每次我需要评估的输入时间.问题是,当我试图更新$1变量(引用函数的第一个变量参数)时,我收到错误消息"$ VARIABLE command not found".

这是代码:

function input_handler() {
 if is_integer $1; then
  selid="$1 -1"
  if [[ "$1" -le "0" ]]; then
   echo "Please use a simple positive number!"
  else
   if [[ "$1" -le "${#array[*]}" ]]; then
    eval $1="${array[selid]}"
    echo "Ok, moving on..."
   else
    echo "That number seems too large, try again?"
   fi
  fi
 else
  if [ -e $2/$1 ]; then
   echo "Ok, moving on..."
  else
   echo "That item is not on the list, try again!"
  fi
 fi …
Run Code Online (Sandbox Code Playgroud)

variables bash function

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

数组中的Bash检查元素用于另一个数组中的元素

我找到了这个很酷的Bash函数,用于检查数组是否包含一个元素:

CONTAINS_ELEMENT(){
  local e
  for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
  return 1
}
Run Code Online (Sandbox Code Playgroud)

以下是它的用法示例:

if CONTAINS_ELEMENT $element "${array[@]}"; then
... 
fi
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有办法重写这个函数,以便它可以检查数组中的任何值是否等于其他数组的任何值,而不只是检查一个单独的值,因为它正确吗?

arrays bash function

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

Bash:从函数返回行号

我正在尝试在 bash 脚本中实现一个中止函数,目前它看起来像这样:

function abort {
  LOGFILE=/var/log/bash_test
  DATE=$(date "+%Y %b %a %H:%M:%S")
  printf "\n------| ERROR: %s line %03d in %s |------\n" "$DATE" "$2" "${0}" >> "$LOGFILE"
  echo "$1" >> "$LOGFILE"
}

abort "Some kind of error..." $LINENO
Run Code Online (Sandbox Code Playgroud)

这将在 /var/log/bash_test 中产生

------| ERROR: 2014 Jan Tue 12:50:12 line 007 in /home/user/test.sh |------
Some kind of error
Run Code Online (Sandbox Code Playgroud)

我的问题是:手动给出行号的方法(例如 $2 < $LINENO)既丑陋又重复。有没有办法让这个函数自动从函数外部检测 $LINENO ?这样我就可以发出命令

abort "Some kind of error..."
Run Code Online (Sandbox Code Playgroud)

仍然得到行号?

error-handling bash function line-numbers

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