小编the*_*ien的帖子

在bash脚本中插入包含'$'的变量

我正在写一个创建用户帐户的bash脚本.根据特定条件从文件中提取用户名和密码哈希.密码哈希自然包含'$'分隔哈希的字段(例如$ 1 $ {SALT} $ ...).

问题是-p选项useradd需要在密码哈希周围使用单引号,以防止'$'字段作为变量进行插值.传递变量时,为了正确插值,引号需要加倍.单引号将变量视为字符串.

但是,如果我用双引号传递变量,则扩展变量,然后将每个'$'视为一个变量,意味着密码永远不会正确设置.更糟糕的是,有些变量在其中有大括号('{'或'}'),这进一步扼杀了事情.

如何传递这样的值并确保它完全插值而不需要shell修改?

所有内插变量完整的特定代码行示例:

# Determine the customer we are dealing with by extracting the acryonym from the FQDN
CUSTACRO=$(${GREP} "HOST" ${NETCONF} | ${AWK} -F "." '{print $2}')

# Convert Customer acronym to all caps
UCUSTACRO=$(${ECHO} ${CUSTACRO} | ${TR} [:lower:] [:upper:])

# Pull the custadmin account and password string from the cust_admins.txt file
PASSSTRING=$(${GREP} ${CUSTACRO} ${SRCDIR}/cust_admins.txt)

# Split the $PASSSTRING into the custadmin and corresponding password
CUSTADMIN=$(${ECHO} ${PASSSTRING} | ${CUT} -d'=' -f1) …
Run Code Online (Sandbox Code Playgroud)

variables bash shell

9
推荐指数
1
解决办法
1万
查看次数

RDS 不支持使用以下组合创建数据库实例

我想弄清楚如何创建一个简单的数据库实例。到目前为止,我只有一个DBSubnetGroupDBInstance。在这一点上,我已经根据我尝试使用我的模板(在 Designer 中创建)创建堆栈时遇到的错误找出了一些事情。

我现在遇到了一个错误,根据实例类文档,它似乎应该被支持,但我想不是。根据我下面的片段,我应该使用什么?

myDB:
  Type: 'AWS::RDS::DBInstance'
  Properties:
    DBInstanceClass: db.m1.small
    DBName: myDB
    DBSubnetGroupName: !Ref myDBSubnetGroup
    Engine: mysql
    EngineVersion: 5.6.41
    AllocatedStorage: '100'
    MasterUsername: admin
    MasterUserPassword: AmazingPassword
Run Code Online (Sandbox Code Playgroud)

实际错误是

RDS does not support creating a DB instance with the following combination: DBInstanceClass=db.m1.small, Engine=mysql, EngineVersion=5.6.41, LicenseModel=general-public-license. For supported combinations of instance class and database engine version, see teh documentation. (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 04a8be38-9368-40e4-b677-1cdc442b3cae
Run Code Online (Sandbox Code Playgroud)

再次,我查看了文档,它说 db.m1.small 支持 MySQL v5.6。也许这已经过时了?我想我可以尝试5.7。

有什么想法吗?

amazon-web-services amazon-rds aws-cloudformation

8
推荐指数
3
解决办法
9083
查看次数

终结者终端的大小可以保存在布局中吗?

我一直在尝试配置终结器以尊重终端的大小.这可能吗?实际上,每次重新打开终结器时,我都必须将几个终端调整为我想要的配置.

首选项似乎没有配置此选项.它似乎只允许我设置拆分而不是终端大小.

我希望它看起来像: 适当的布局

但这就是我打开终结者时的样子: 布局不当

每次打开终结者时,我最终都要调整右下角的两个终端的大小.是否可以将调整大小作为配置布局的一部分进行?

terminator

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

使用内置 Perl 模块捕获短主机名?

有没有更干净的方法

use Sys::Hostname qw(hostname);

my $hostname = hostname();
$hostname =~ s/\.domain//;
Run Code Online (Sandbox Code Playgroud)

基本上,是否可以在不运行两个$hostname分配且不使用其他模块的情况下将主机名剥离为其短名称?

perl

4
推荐指数
2
解决办法
4261
查看次数

阅读后如何使用YAML文件中的数据?

我正在从YAML文件中读取数据(使用YAML qw/LoadFile /).我需要能够读取值并将它们插入到其他文件中.

YAML文件采用以下格式:

--- 
host:
  - name: first_host
    interface:
      - name: eth0
        oldip: 1.2.3.4
        newip: 2.3.4.5
        oldgw: 1.2.3.1
        newgw: 2.3.4.1
      - name: eth1
        oldip: 1.2.3.4
        newip: 2.3.4.5
        oldgw: 1.2.3.1
        newgw: 2.3.4.1
      - name: eth2
        oldip: 1.2.3.4
        newip: 2.3.4.5
        oldgw: 1.2.3.1
        newgw: 2.3.4.1
Run Code Online (Sandbox Code Playgroud)

如果我通过Data :: Dumper运行,我得到以下内容($ Data :: Dumper :: Terse已启用):

{
  'host' => [
            {
              'interface' => [
                             {
                               'oldgw' => '1.2.3.1',
                               'newgw' => '2.3.4.1',
                               'name' => 'eth0',
                               'newip' => '2.3.4.5',
                               'oldip' => '1.2.3.4'
                             },
                             {
                               'oldgw' => '1.2.3.1', …
Run Code Online (Sandbox Code Playgroud)

perl yaml

2
推荐指数
1
解决办法
4782
查看次数

我是否需要在Rails迁移中显式创建ID?

我正在尝试确定Rails是否具有每个数据库条目的内置主键ID,或者,如果在运行时rails generate我必须明确定义ID,例如id:integer.到目前为止,我已经遇到了很多帖子,询问如何更改主键行为或如何创建多列索引,但没有说明Rails默认如何处理主键,实际上它确实如此.

如果仅仅是id:integer在运行时使用的问题rails generate还有什么必要来确保将列用作主键吗?我已经看过:primary => true提到但很少解释为什么它包含在任何特定的例子中.通常它是处理上述多列索引的解释的一部分.

ruby ruby-on-rails ruby-on-rails-3

2
推荐指数
1
解决办法
98
查看次数

是否有可能清除Spring gem的缓存?

我正在尝试完成一项任务,该任务为之前的任务创建一个几乎相同的应用程序.它需要一个名为的应用程序todolists.这与前一个赋值相同,为了能够重新开始,我将以前的赋值重命名为todolists_mod1.然后我发现问题是Spring宝石记录了之前的任务.

我知道我可以禁止Spring使用的DISABLE_SPRING变量.这对我来说似乎有点乏味.

有没有办法我可以强制Spring从缓存中删除以前的赋值应用程序,或者在不卸载gem的情况下完全清除缓存?

ruby-on-rails spring-gem

2
推荐指数
1
解决办法
1678
查看次数

[[test]] || <action>格式在bash脚本中不起作用

继续我昨天问的一个问题,我有一个脚本,它运行三个测试并报告每个测试.

Tom Fenech为我提供了一些简单的代码,应该解决我的问题.但是,它似乎没有按预期工作.

pass=1
[[ test1 ]] || { echo 'test1 failed'; pass=0 }
[[ test2 ]] || { echo 'test2 failed'; pass=0 }
[[ test3 ]] || { echo 'test3 failed'; pass=0 }
[[ $pass -eq 0 ]] && echo 'one of the tests failed'
Run Code Online (Sandbox Code Playgroud)

让我们只使用其中一个测试.假设我有一个变量,我需要将其值与数字进行比较:

[[ ${VAR} == '128' ]] || { echo "test failed"; pass=0 }
Run Code Online (Sandbox Code Playgroud)

这总是会导致错误:

./magic_sysrq.sh: line 64: syntax error near unexpected token `else'
./magic_sysrq.sh: line 64: `else'
Run Code Online (Sandbox Code Playgroud)

对于上下文,脚本包含if...elif...else...fi运行这些测试的块.第一个(if …

bash

0
推荐指数
1
解决办法
43
查看次数