Questions tagged «bash»

Bash是Bourne Again SHell,它是经典Unix sh(shell)的继承者。

2
脚本执行后导出的变量未持久
我面临一个棘手的问题。我有一个带有solaris 11的虚拟机,并尝试编写一些bash脚本。 如果在外壳上输入: export TEST=aaa 然后运行: set 我正确地看到了一个名为TEST的新环境变量,其值为aaa。但是,如果我在脚本中做基本上相同的事情。当脚本终止时,我看不到变量集。举一个具体的例子,如果在文件test.sh中,我有: #!/usr/bin/bash echo 1: $TEST #variable not defined yet, expect to print only 1: echo 2: $USER TEST=sss echo 3: $TEST export TEST echo 4: $TEST 它打印: 1: 2: daniele 3: sss 4: sss 执行后,未在外壳中设置TEST。我想念什么吗?我试图既做出口TEST = sss和单独的变量集/出口没有区别。
8 bash  solaris 


2
rsync:如何仅在最顶层目录中排除Dotfile?
当bash与下执行备份rsync,我想排除顶级目录中的所有点文件和隐藏目录,但不是那些另有目标目录。例如: /copyme.c /.dontcopythisfile /.dontcopythisdirectory/or_its_contents /directory/.butcopymetoo rsync -a --include=".includeme" --exclude=".*" . DEST无法在子目录中复制所需的点文件,但是诸如此类的变体--exclude="./.*"也会失败。 有什么建议吗?这是否需要过滤规则而不是简单规则--exclude?
8 regex  bash  rsync 

2
猫* | grep某事…结果在什么文件中?
如果要运行以下命令 cat * | grep DATABASE Shell将吐出*文件中包含单词的所有行DATABASE。有什么办法还可以吐出每行分开的文件吗? 我试着使用-H了grep的选项根据该man说,print the filename for each match但在我的壳它只是说, (standard input):$DATABASE_FUNCTION = dothis();
8 bash  grep  cat 

5
Bash:将命令作为参数传递给函数时,引号被剥夺
我正在尝试为我的脚本实现一种空运行机制,并在将命令作为参数传递给函数并导致意外行为时遇到引号被剥夺的问题。 dry_run () { echo "$@" #printf '%q ' "$@" if [ "$DRY_RUN" ]; then return 0 fi "$@" } email_admin() { echo " Emailing admin" dry_run su - $target_username -c "cd $GIT_WORK_TREE && git log -1 -p|mail -s '$mail_subject' $admin_email" echo " Emailed" } 输出为: su - webuser1 -c …



3
stdout / stderr在start-stop-daemon中重定向
我正在尝试编写init配置,它将我的守护程序的输出重定向到两个文件(用于stdout和stderr)。问题是,它不起作用。我正在读这本书。 因此,我已经完成了该Shell脚本来测试这种方法。而且它不起作用: PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="Seed kurokikaze starter" #NAME=node DAEMON="/etc/node-version/0.1.99/bin/node" DAEMON_ARGS="/etc/seed/kurokikaze/server.js" DAEMON_DIR="/etc/seed/kurokikaze" APPLOG_FILE="/var/log/seed/kurokikaze" ERRLOG_FILE="/var/log/seed/kurokikaze-err" PIDFILE="/var/run/seeds/kurokikaze.pid" SCRIPTNAME="/etc/seed-init/kurokikaze" NCMD="exec $DAEMON $DAEMON_ARGS 1>>$APPLOG_FILE 2>>$ERRLOG_FILE" start-stop-daemon -Sbmv --pidfile $PIDFILE --chdir ${DAEMON_DIR} --exec $DAEMON --startas /bin/sh -- $NCMD 但是,如果您在不将守护程序包装在单独的外壳程序中的情况下启动此程序,它将按预期工作(只是没有stderr / stdout重定向): start-stop-daemon -Sbmv --pidfile $PIDFILE --chdir ${DAEMON_DIR} --exec $DAEMON -- ${DAEMON_ARGS} 问题是:为什么第一个脚本不起作用?系统是Debian Lenny,start-stop-daemon版本是1.14.29
8 debian  bash 

4
将用户名传递给脚本后,找到用户的主目录
我正在编写一个脚本,当用户登录并检查某个文件夹是否存在或符号链接损坏时会调用该脚本。(这是在Mac OS X系统上,但问题纯粹是bash)。 它不是很优雅,也不起作用,但是现在看起来像这样: #!/bin/bash # Often users have a messed up cache folder -- one that was redirected # but now is just a broken symlink. This script checks to see if # the cache folder is all right, and if not, deletes it # so that the system …
8 unix  bash 


1
等同于.pgpass的MySQL,或cron作业中针对mySQL的自动身份验证
我正在编写一个bash脚本来备份数据库。大多数都是postgresql,而在postgres中,有一种方法可以避免通过创建包含postgres密码的〜/ .pgpass文件来进行身份验证。我将其放在root的主目录中,并将其设置为chmod 0600,以便root可以转储postgres数据库而无需进行身份验证。现在我想为mysql做类似的事情,尽管我只有一个mysql数据库。我怎样才能做到这一点?我不想在mysqldump的命令行上指定密码,因为这是脚本的一部分,对于其他用户来说可能有些可见。有没有一种更好的方法(即内置于mysql)来执行此操作,而不是制作一个只有root用户才能读取的文件,然后再读取该文件以获得mysql密码,然后在bash脚本中将其用作变量?
8 backup  bash  cron  mysql 

3
sudo之前的用户名
我有一个需要sudo的脚本,但是该脚本必须根据原始用户设置参数,例如: chown "${USER}:${USER}" dir 如果将其设置为sudo,则最终得到chmod root:root,这没有帮助。 那么如何在sudo之前获取用户名?




By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.