我有一个非常简单的bash脚本来执行部署。这是我的代码:
#!/usr/bin/env bash
function print_help
{
echo '
Deploy the application.
Usage:
-r reinstall
-h show help
'
}
reinstall=false
while getopts "rh" opt; do
case ${opt} in
r)
echo "clean"
re
我只是在想,有没有什么办法可以先获取一个文件,然后再跟踪该文件的来源?
我在我的bash脚本上使用,我在主脚本上使用easyoption.sh,它工作得很好。但是,当我有其他脚本稍后从主脚本加载时,我希望获得帮助,并且-- easyoptions.sh应该在最后加载的文件上工作。
示例:
test.sh
#!/bin/bash
## EasyOptions Sub Test
## Copyright (C) Someone
## Licensed under XYZ
## -h, --help All client scripts have this, it
我在bash中有这样一个脚本:
#!/usr/bin/env bash
set -e
if [[ "$#" == 0 ]]; then
printhelp
exit 1
fi
# process options
while [[ "$1" != "" ]]; do
case "$1" in
-n | --name)
shift
_NAME="$1"
;;
-i | --id)
shift
_I
我想用c编写自己的bash编译器命令。事实上,我喜欢在这个bash脚本中使用gcc编译器,只是稍微修改一下。
所以,我希望有像-help -backup这样的可选命令。但我也希望有-o文件名作为强制输入。我该怎么做?我想读取-o文件名。但问题似乎出在我对可选参数和强制参数的理解上。我该如何区分这两者呢?下面是我之前写的代码(非常感谢大家看一下):
#!/bin/bash
for i in $@
do
case $i in
-help)
echo "This is how you use this command."
我想做一个像makefile一样工作的bash脚本。它将有像-archive、-clean、-backup等选项。唯一的要求是它必须有-o参数,以便它指定一个名称。我现在遇到的问题是,我不知道如何从参数中取出.c文件。
例如,如果我输入./compile.sh -o name -backup hello_world.c print.c
我该如何编译它呢?
这是我到目前为止拥有的代码。
#!/usr/local/bin/bash
if [ $1 != '-o' ]; then
echo "ERROR -o wasn't present as first argu
我试图寻找我的问题无法得到答案,也许是因为我不知道如何正确地问它,所以我提前道歉。
我正在尝试执行bash脚本中的命令链,例如:
run mysql > type help > exit
root@ubuntu:# mysql
mysql> help
mysql> exit
root@ubuntu:#
如何在bash脚本中实现这一点?
我尝试过这些操作数&&,&;所有这些,例如:
#!/bin/bash
mysql || help || exit
没起作用。它互相执行命令。
这个脚本中的第5行有什么问题(我已经包含了给出错误的代码片段,实际的错误列在代码后面的底部,以及一个指向完整脚本的链接)?
#! /bin/bash
INSTALLDIR=/usr/local/mapguideopensource
CLEAN_FLAG=0
while [ $# -gt 0 ]; do # Until you run out of parameters...
case "$1" in
-prefix|--prefix)
INSTALLDIR="$2"
shift
;;
-c
我试图用javac编译一个shell脚本,它不断地返回以下错误:
$ bash run_RGE.sh
javac: invalid flag: Element.java
Usage: javac <options> <source files>
use -help for a list of possible options
javac: invalid flag: RGE.java
Usage: javac <options> <source files>
use -help for a list of possible options
ja
具有bash脚本,如下所示
#! /bin/bash
usage()
{
echo -e "need help!"
}
while getopts ":a:b:h" OPTION
do
case $OPTION in
a)
printf "a option with value %s\n" $OPTARG
;;
b)
printf "b option with value %s\n" $OPTARG
;;
h)
我编写了一个bash脚本,它读取脚本参数并将它们传递给parsearg函数:
#!/usr/bin/env bash
function main() {
parseargs2 "$@"
}
function parseargs2() {
MAINCOMMAND=$1
shift
while [ $# -gt 0 ]; do
case $1 in
-s|--service) SERVICE_NAME="$2" ;;
-r|--registry) REGISTRY=
我正在使用一个旧的shell脚本,该脚本用于测试二进制文件中的某些特性(即调用nm、objdump、ldd等;并对结果进行一些解析)。当前的shell脚本非常“敏感”,而且很大,所以我想尽量减少对它所做的更改。
它目前首先检查参数的数量,每个参数都是路径,即:
if [ "$#" -lt 3 ]
then
echo "Error. Invalid number of arguments."
exit
fi
我想添加一些额外的参数和它们的长形式对应项,以禁用脚本内部的某些特性,而不使上述测试无效,即:
-h | --help: Print shell us
当我将参数传递给脚本时,我遇到了这样的问题,即没有执行与case菜单相对应的函数。脚本接受参数作为输入,并执行适当的操作。
#!/bin/bash
usage () {
echo " Usage:
-h, --help #Displaying help
-p, --proc #Working with directory /proc
-c, --cpu #Working with CPU
-m, --memory #Working with memory
-d, --disks #Working with d
到目前为止,这是我在不使用GNU getopt或bash getopts的情况下编写bash脚本参数解析器的最佳尝试。
前两个函数usage和err可以或多或少地被忽略,但我计划在调用err时添加指定退出代码的功能。
现在,对于main函数中的第一部分代码:
shopt -s extglob
args=()
for (( i = 1; i <= "$#"; i++ )); do
arg="${!i}"
case "${arg}" in
-[[:alpha:]?]+([[:alpha:]?]))
for (( j
我正在编写一个Bash脚本来解析命令行选项,然后执行所需的函数。
#!/bin/bash
TEMP=`getopt --longoptions help --options h --name 'script.sh' -- "$@"`
if [ $? != 0 ] ; then
echo "Try 'script.sh --help' for more information." >&2 ;
exit 1 ;
fi
eval set -- "$TEMP"
while true ; do
好吧,我是linux的业余爱好者,玩getops和getop;我在几个论坛上读过关于这个主题的几次对话,但我似乎无法使我的代码工作。
这里有一个使用getopts的小脚本,它是从这个论坛回收的:
#!bin/bash
while getopts ":a:p:" opt; do
case $opt in
a) arg_1="$OPTARG"
;;
p) arg_2="$OPTARG"
;;
\?)
;;
esac
done
printf "Argument firstArg is
Bash严格模式的定义如下:
#!/bin/bash
set -euo pipefail
IFS=http://redsymbol.net/articles/unofficial-bash-strict-mode/考虑对Bash脚本中的位置参数进行以下解析:#!/bin/bash
set -euo pipefail
IFS=这不适用于以下错误,例如:$ ./app.sh -r https://example.net:8080/auth/callback -a 53b37b21-2c6e-4731-a5e5-15b98052c686
./app.sh: line 18: $1:
这是我的脚本,我想通过用户接收参数--路径和-模式,例如:
./myscript.sh -path=/hello-mode=a
脚本
#!/usr/bin/env bash
set -e
HELP=false
MODE=false
PATH=false
for arg in "$@"
do
case "$arg" in
-h|--help)
HELP=true
;;
--mode*)
MODE=`echo $arg | sed -e
我的一位同事编写了一个perl脚本,要求输入用户的Windows域/用户名,当然,我们输入的格式是domainname\username。然后,Getopt:Long模块将其转换为字符串,去掉'\‘字符并呈现不正确的字符串。当然,我们可以要求我们所有的用户以domainname\\username的身份输入他们的域/用户组合,但我真的不想“修复用户,而不是程序”。我们还使用了我们为此创建的一个模块,因为它访问ColdFusion,所以我将调用OurCompany::ColdFusionAPI。
我们的代码如下所示:
#!/usr/bin/perl
use common::sense;
在Bash初学者指南书中
在任何其他展开之前执行大括号展开,并在结果中保留其他展开所特有的任何字符。这完全是文字上的。Bash不对扩展上下文或大括号之间的文本应用任何语法解释。为了避免与参数展开发生冲突,字符串"${“被认为不符合大括号展开的条件。
在这一段中,它说Bash不对扩展上下文或大括号之间的文本应用任何语法解释,但是当我执行此命令时。
h{elp,`uname`}
它回来了
bash: help: no help topics match `hLinux'. Try `help help' or `man -k hLinux' or `inf
我正在尝试执行bash脚本(git-ftp),但似乎无法执行。这就是发生的事情:
[trusktr@rocketship ~]$ ~/scripts/git-ftp
: No such file or directory
该文件具有许可755。
以下是脚本的内容:
为什么我会得到这个错误?我能做些什么来解决这个问题?