相关疑难解决方法(0)

使用bash中的单个命令为shell变量分配默认值

我在bash(3.00)shell脚本中对变量进行了大量测试,如果未设置变量,则会分配一个默认值,例如:

if [ -z "${VARIABLE}" ]; then 
    FOO='default'
else 
    FOO=${VARIABLE}
fi
Run Code Online (Sandbox Code Playgroud)

我似乎记得在一行中有一些语法,类似于三元运算符,例如:

FOO=${ ${VARIABLE} : 'default' }
Run Code Online (Sandbox Code Playgroud)

(虽然我知道这不起作用......)

我疯了,还是有类似的东西存在?

bash shell

612
推荐指数
12
解决办法
27万
查看次数

在Bash函数中使用getopts

我想getopts在我的.bash_profile中定义的函数内部使用.我的想法是,我想将一些标志传递给此函数以改变其行为.

这是代码:

function t() {
    echo $*
    getopts "a:" OPTION
    echo $OPTION
    echo $OPTARG
}
Run Code Online (Sandbox Code Playgroud)

当我这样调用它时:

t -a bc
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

-a bc
?
 
Run Code Online (Sandbox Code Playgroud)

怎么了?我想在bc没有手动移位和解析的情况下获得该值.如何getopts在函数内正确使用?

编辑:纠正我的代码片段尝试$ OPTARG,无济于事

编辑#2:好的事实证明代码没问题,我的shell被搞砸了.打开一个新窗口解决了它.arg值确实在$ OPTARG中.

bash function getopts

43
推荐指数
3
解决办法
2万
查看次数

Bash - 具有可选参数和缺少逻辑的函数

我正在尝试为useradd命令创建简单的函数,并快速提高我糟糕的shell编程技巧.

useradd -m -g [initial_group] -G [additional_groups] -s [login_shell] [username]
Run Code Online (Sandbox Code Playgroud)

现在我有点不确定如何使用可选参数.经过一些谷歌搜索,我认为可能有一个处理,只需要玩代码.

我不确定的一件事是逻辑,我很好奇你们将如何写这个.我相信它会比我可以破解的更好.


以下是我将尝试设置我的函数参数的方法,对于登录shell和初始组,我将使它们具有通用默认值.

arg1 - userName, required
arg2 - loginShell, optional (default: /bin/bash)
arg3 - initGroup, optional (default: users)
arg4 - otherGroups, optional (default: none)
Run Code Online (Sandbox Code Playgroud)

这是关于我如何构建这个问题的一些蹩脚的伪代码.

function addUser( userName, loginShell, initGroup, otherGroups){
// Not how I would go about this but you should get the point
  string bashCmd = "useradd -m -g ";

// Adding the initial user group
  if(initGroup == null){
    bashCmd += "users";
  } else {
    bashCmd += …
Run Code Online (Sandbox Code Playgroud)

bash

7
推荐指数
2
解决办法
9687
查看次数

bash getopts多个参数或默认值

所以我有一个关于在bash中获取opts的问题.我想获取参数的值,如果它们存在但是如果它们不存在则使用默认值.因此脚本应该采用目录和整数,但如果未指定,则$ PWD和3应为默认值.这是什么

while getopts "hd:l:" opt; do
    case $opt in
        d ) directory=$OPTARG;;
        l ) depth=$OPTARG;;
        h ) usage
        exit 0;;
        \? ) usage
        exit 1;;
    esac
Run Code Online (Sandbox Code Playgroud)

bash shell scripting getopts

6
推荐指数
1
解决办法
5310
查看次数

标签 统计

bash ×4

getopts ×2

shell ×2

function ×1

scripting ×1