首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将shell脚本变量设置为命令的输出

将shell脚本变量设置为命令的输出
EN

Stack Overflow用户
提问于 2016-07-29 00:17:28
回答 2查看 1.9K关注 0票数 2

我正在尝试cd进入脚本中设置的任何变量的md5散列,但我没有得到md5的正确值,我认为这与我声明变量的方式有关。谢谢你的帮助!

代码语言:javascript
复制
#!/bin/bash
var1=$1
md5=$(-n $var1 | md5sum)
cd /var/www/html/$md5

我以为它会把我带到md5散列给出的一个目录:

代码语言:javascript
复制
$ ./myscript hello
(no output)
$ pwd
/var/www/html/5d41402abc4b2a76b9719d911017c592

相反,它会给我错误,并尝试cd到错误的路径:

代码语言:javascript
复制
$ ./myscript hello
./myscript: line 3: -n: command not found
./myscript: line 4: cd: /var/www/html/d41d8cd98f00b204e9800998ecf8427e: No such file or directory
$ pwd
/home/me

它错误地尝试cd到的md5sum也是相同的,无论我输入哪个值。

EN

回答 2

Stack Overflow用户

发布于 2016-07-29 01:32:03

对于任何其他有这个问题的人来说,这可以作为一个解决方案。

代码语言:javascript
复制
#!/bin/bash
md5=$*
hash="$(echo -n "$md5" | md5sum )"
cd /var/www/html/$hash
票数 0
EN

Stack Overflow用户

发布于 2016-07-29 02:42:57

你的脚本:

代码语言:javascript
复制
#!/bin/bash
var1=$1
md5=$(-n $var1 | md5sum)
cd /var/www/html/$md5

这有几个问题:

  1. -n不是管道中的有效命令-n $var1 | md5sum.
  2. md5sum返回的不仅仅是digest.
  3. Changing MD5脚本中的目录将不会反映在调用shell中。
  4. 输入使用时未加引号。

我会为此编写一个shell函数,而不是一个脚本:

代码语言:javascript
复制
function md5cd {
  dir="$( printf "%s" "$1" | md5sum - | cut -d ' ' -f 1 )"
  cd /var/www/html/"$dir" || return 1
}

该函数使用md5sum计算给定字符串的MD5摘要,并截断输出中的文件名(-)。然后,它将目录切换到指定位置。如果目标目录不存在,它会通过返回非零退出状态来表示这一点。

将其扩展到cd,使其成为从命令行上的路径构造的路径,但将最后一个path元素更改为MD5摘要(只是为了好玩):

代码语言:javascript
复制
function md5cd {
  word="${1##*/}"

  if [[ "$word" == "$1" ]]; then
    prefix="."
  else
    prefix="${1%/*}"
  fi

  dir="$( cut -d ' ' -f 1 <( printf "%s" "$word" | md5sum - ) )"
  cd "$prefix"/"$dir" || return 1
}

测试:

代码语言:javascript
复制
$ pwd
/home/myself

$ echo -n "hex this" | md5sum
990c0fc93296f9eed6651729c1c726d4  -

$ mkdir /tmp/990c0fc93296f9eed6651729c1c726d4

$ md5cd /tmp/"hex this"

$ pwd
/tmp/990c0fc93296f9eed6651729c1c726d4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38641757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档