相关疑难解决方法(0)

在bash中的命令之前设置环境变量不适用于管道中的第二个命令

在给定的shell中,通常我会设置一个或多个变量,然后运行一个命令.最近我了解了将变量定义添加到命令的概念:

FOO=bar somecommand someargs
Run Code Online (Sandbox Code Playgroud)

这工作......有点儿.当你改变一个LC_*变量(它似乎影响命令而不是它的参数,例如'[az]'字符范围)或者输出到另一个命令时,它不起作用:

FOO=bar somecommand someargs | somecommand2  # somecommand2 is unaware of FOO
Run Code Online (Sandbox Code Playgroud)

我可以在"FOO = bar"之前添加somecommand2,但是它可以添加不需要的重复,但它对根据变量解释的参数没有帮助(例如'[az]')

那么,在一条线上做这件事的好方法是什么?我正在考虑以下顺序:

FOO=bar (somecommand someargs | somecommand2)  # Doesn't actually work
Run Code Online (Sandbox Code Playgroud)

编辑:我有很多好的答案!目标是保持一个单行,最好不使用"导出".使用bash调用的方法总体上是最好的,尽管带有"export"的括号版本更紧凑.使用重定向而不是管道的方法也很有趣.

bash environment-variables

333
推荐指数
5
解决办法
22万
查看次数

解释'DEBUG = myapp:*npm start'实际上是在做什么

Express应用程序生成器(位于此处)的入门页面表示$ DEBUG=myapp:* npm start使用MacOS或Linux 启动服务器.

这很好,但是我无法理解这条线实际上在做什么.我猜想它会为变量分配一些东西DEBUG,但在退出服务器后我跑了echo $DEBUG,它什么都没打印.我猜:这里有点关键,但我不清楚如何/为什么.

希望有人可以为我打破这个.

bash command-line node.js express

9
推荐指数
3
解决办法
4413
查看次数

命令前的 Bash 变量赋值

前几天我遇到一个命令

AWS_ACCESS_KEY="foo" AWS_SECRET_KEY="bar" aws list iam
Run Code Online (Sandbox Code Playgroud)

我看到在命令之前设置变量会在命令的环境中添加这些变量:

#make sure there is no environment variable "foo"
$ echo $foo

#mimic-ing above command
$ foo=bar printenv | grep foo
foo=bar

#or trying from python environment
$foo=bar python -c "import os; print(os.getenv('foo', None))"
bar

#foo is destroyed now
$ echo $foo  
#<<NOTHING
Run Code Online (Sandbox Code Playgroud)

我试图使用这个技巧根据今天的日期动态创建一个新目录:

$ dname=$(date +%d_%m_%y) mkdir ${dname} && cd ${dname}
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

mkdir: missing operand
Try 'mkdir --help' for more information.
Run Code Online (Sandbox Code Playgroud)

dname=$(date +%d_%m_%y) echo $dname返回空!

我究竟做错了什么?如何在 bash 的同一行动态创建和使用变量?

bash environment-variables

4
推荐指数
1
解决办法
2816
查看次数

将环境变量传递给进程

我刚刚遇到了这个代码片段:

$ DEVELOPMENT=1 node dev-mode.js
Run Code Online (Sandbox Code Playgroud)

这一行运行 node.js 程序并设置环境变量DEVELOPMENT。我不明白设置 env 变量的机制是什么?这是有效的语法:

$ [var1=value1 var2=value2] [process_name process_params] ?
Run Code Online (Sandbox Code Playgroud)

bash shell node.js

3
推荐指数
1
解决办法
3360
查看次数